<!-- Page title -->
<div class="page-title-wrapper services-title-wrapper">
    <div class="pattern-dark-wrapper">
        <div class="container">
            <h2 class="page-title page-title-margin">Moqui<br><span class="page-title-main">Framework</span></h2>

            <div class="circle-button-wrapper"><div class="circle-button">
                <h4 class="circle-button__title">Download<br>Now</h4>
                <a class="circle-button-second" href="https://github.com/moqui/moqui-framework/releases/latest">
                    <h4 class="circle-button__title">Download<br>Moqui</h4></a>
            </div></div>
        </div>
    </div>
</div>
<!-- End Page title -->
<!-- Promobox -->
<div class="container hidden-xs">
    <div class="row">
        <div class="col-md-12">
            <div class="promobox promobox-position-short">
                <p class="promobox__text promobox-wide"><strong>Latest:</strong>
                    <a href="https://github.com/moqui/moqui-framework/releases/latest">Framework 3.0.0</a>,
                    <a href="https://github.com/moqui/moqui-hazelcast/releases/latest">Hazelcast 1.1.3</a>,
                    <a href="https://github.com/moqui/moqui-aws/releases/latest">AWS 1.1.0</a>,
                    <!--
                    <a href="https://github.com/moqui/moqui-runtime/releases/latest">Runtime 2.1.1</a>,
                    <a href="https://github.com/moqui/example/releases/latest">Example 2.1.1</a>,

                    <a href="https://github.com/moqui/moqui-atomikos/releases/latest">Atomikos 1.0.0</a>,
                    <a href="https://github.com/moqui/moqui-camel/releases/latest">Camel 1.0.2</a>,

                    <a href="https://github.com/moqui/moqui-fop/releases/latest">FOP 1.1.2</a>,
                    <a href="https://github.com/moqui/moqui-kie/releases/latest">KIE 1.0.2</a>,
                    <a href="https://github.com/moqui/moqui-orientdb/releases/latest">OrientDB 1.0.2</a>
                    <a href="https://github.com/moqui/moqui-poi/releases/latest">POI 1.0.1</a>
                    <a href="https://github.com/moqui/moqui-sftp/releases/latest">SFTP 1.0.0</a>
                    <a href="https://github.com/moqui/moqui-wikitext/releases/latest">WikiText 1.0.1</a>
                    -->
                </p>
                <!--
                <a class="btn btn-wide" href="https://github.com/moqui/moqui-framework/issues">Issues</a>
                <a class="btn btn-wide" href="https://github.com/moqui/moqui-framework">Code</a>
                <a class="promobox-img" href="https://github.com/moqui/moqui-framework" target="_blank">
                    <img src="/github_logo.png" alt="GitHub.com" width="80"></a>
                -->
            </div>
        </div>
    </div>
</div>
<!-- End Promobox -->

<!-- Begin main content -->
<div class="container page-content-wrapper">
    <div class="row">
        <section class="col-sm-8 services-description basic_html">
            <!-- <h2 class="section-title-simple">Highlights</h2> -->
            <div class="row">
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-user"></i>
                    <h4 class="service__title">Efficient</h4>
                    <p class="service__text">Simple. Reusable by design. Easy to read and write. Minimally error prone.
                        Small. Get started immediately.</p>
                </div></div>
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-wrench"></i>
                    <h4 class="service__title">Comprehensive</h4>
                    <p class="service__text">Relational &amp; document data. Local &amp; web services.
                        Screens &amp; forms. Search &amp; analytics. Printing. Caching. L10n. Integration. More.</p>
                </div></div>
            </div>
            <div class="row">
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-lock"></i>
                    <h4 class="service__title">Secure</h4>
                    <p class="service__text">Flexible authc and authz. Usage audit and velocity limits.
                        Web safe (XSS, CSRF, injection, etc).</p>
                </div></div>
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-line-chart"></i>
                    <h4 class="service__title">Scalable</h4>
                    <p class="service__text">Small instances (container or VM) with as little as 1GB RAM.
                        Large clusters with dozens of nodes for millions of concurrent users.</p>
                </div></div>
            </div>
            <div class="row">
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-puzzle-piece"></i>
                    <h4 class="service__title">Modular</h4>
                    <p class="service__text">Minimal core framework (~25MB). Extendable with tool components.
                        Interfaces and configuration options to add tools or override default functionality.</p>
                </div></div>
                <div class="col-md-6"><div class="services__item">
                    <i class="icon-circle icon-circle--lg icon icon--primary fa fa-globe"></i>
                    <h4 class="service__title">Ecosystem</h4>
                    <p class="service__text">More than just tools. Thousands of reusable business artifacts in modular components.
                        Get your enterprise application projects on track from day one.</p>
                </div></div>
            </div>
            <p class="page__text">For more detail see <strong>Introduction: What is Moqui Framework?</strong> and other sections below.</p>
        </section>
        <section class="col-sm-4">
            <ul class="list-arrow list-arrow--hover-efect" style="margin-top: 35px;">
                <li class="list__item"><a href="/docs/moqui/Community+Guide">
                    <i class="icon-circle icon-circle--thin fa fa-cloud"></i> Community Guide</a></li>
                <li class="list__item"><a href="https://github.com/moqui/moqui-framework" target="_blank">
                    <i class="icon-circle icon-circle--thin fa fa-github"></i> GitHub: Framework</a></li>
                <li class="list__item"><a href="https://github.com/moqui/moqui-framework" target="_blank">
                    <i class="icon-circle icon-circle--thin fa fa-github"></i> GitHub: Runtime</a></li>
                <li class="list__item"><a href="/docs/framework/Run+and+Deploy">
                    <i class="icon-circle icon-circle--thin fa fa-cloud"></i> Running and Deployment</a></li>
                <li class="list__item"><a href="/docs/framework/Quick+Tutorial">
                    <i class="icon-circle icon-circle--thin fa fa-user"></i> Tutorial</a></li>
                <li class="list__item"><a href="/docs/framework/Framework+Features">
                    <i class="icon-circle icon-circle--thin fa fa-play"></i> Features</a></li>
                <li class="list__item"><a href="/javadoc/index.html">
                    <i class="icon-circle icon-circle--thin fa fa-code"></i> API Javadoc</a></li>
                <li class="list__item"><a href="/MakingAppsWithMoqui-1.0.pdf">
                    <i class="icon-circle icon-circle--thin fa fa-book"></i> Making Apps with Moqui (English PDF)</a></li>
                <li class="list__item"><a href="/MakingAppsWithMoquiChinese-1.0.pdf">
                    <i class="icon-circle icon-circle--thin fa fa-book"></i> Making Apps with Moqui (Chinese PDF)</a></li>
                <li class="list__item"><a href="http://www.amazon.com/dp/0692267050" target="_blank">
                    <i class="icon-circle icon-circle--thin fa fa-book"></i> Making Apps with Moqui (Print)</a></li>
            </ul>
        </section>
    </div>
</div>

<div class="container">
    <div class="divider-circle divider-circle--light"></div>

    <div class="row">
        <section class="services-description normal_wrap">
            <div class="row">
                <div class="col-md-4">
                    <div class="services__item small">
                        <i class="icon-circle icon icon--primary fa fa-cog"></i>
                        <h4 class="service__title">Moqui Framework</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-framework/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-framework">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-framework/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MFW&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">The core framework</p>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="services__item small">
                        <i class="icon-circle icon icon--primary fa fa-code"></i>
                        <h4 class="service__title">Moqui Runtime</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-runtime/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-runtime">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-runtime/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MFW&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Default runtime with browser libraries, nav bar, XML Screen macros, and system and tools apps</p>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="services__item small">
                        <i class="icon-circle icon icon--primary fa fa-copy"></i>
                        <h4 class="service__title">Example</h4>
                        <div>
                            <a href="https://github.com/moqui/example/releases">releases</a> -
                            <a href="https://github.com/moqui/example">code</a> -
                            <!-- <a href="https://github.com/moqui/example/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MFW&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Example entities, services, and screens with tests</p>
                    </div>
                </div>
            </div>
        </section>
    </div>
    <div class="row">
        <section class="services-description normal_wrap">
            <div class="row">
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">AWS</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-aws/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-aws">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-aws/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Endpoint for service level integration</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">Apache Camel</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-camel/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-camel">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-camel/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Endpoint for service level integration</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">Apache FOP</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-fop/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-fop">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-fop/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Generate PDF, PS, SVG, etc from XSL-FO and HTML</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">Atomikos</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-atomikos/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-atomikos">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-atomikos/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Alternative to the default Bitronix transaction manager</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">ElasticSearch</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-elasticsearch/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-elasticsearch">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-elasticsearch/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Faceted full-text search and analytics</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">Hazelcast</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-hazelcast/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-hazelcast">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-hazelcast/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Clustering and distributed computing</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">JBoss KIE</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-kie/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-kie">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-kie/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">JBoss KIE integration for Drools rules, jBPM workflow, etc</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">OrientDB</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-orientdb/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-orientdb">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-orientdb/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Document and graph database with Entity Facade integration</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">SFTP</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-sftp/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-sftp">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-sftp/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">SFTP Client using SSHJ for secure integration transport</p>
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="services__item small">
                        <h4 class="service__title">WikiText</h4>
                        <div>
                            <a href="https://github.com/moqui/moqui-wikitext/releases">releases</a> -
                            <a href="https://github.com/moqui/moqui-wikitext">code</a> -
                            <!-- <a href="https://github.com/moqui/moqui-wikitext/issues">issues</a> -->
                            <a href="/vapps/hm/Request/FindRequest?rootWorkEffortId=MTC&statusId=ReqSubmitted,ReqReviewed,ReqInProgress&statusId_op=in">issues</a>
                        </div>
                        <p class="service__text">Render a wide variety of wiki formats</p>
                    </div>
                </div>
            </div>
        </section>
    </div>
</div>

<section class="container basic_html">
    <div class="divider-circle divider-circle--light"></div>

    <h3 class="section-title--smaller">Built With (and thanks to)</h3>
    <div class="row logo_gallery">
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.jetbrains.com/idea/">
            <img src="/images/logos/intellij.jpg" alt="IntelliJ IDEA"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.ej-technologies.com/products/jprofiler/overview.html">
            <img src="/images/logos/jprofiler.png" alt="JProfiler"></a></div>
    </div>

    <h3 class="section-title--smaller">Open Source Projects Used in Framework</h3>
    <div class="row logo_gallery">
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://groovy-lang.org/">
            <img src="/images/logos/groovy-logo-colored.svg" alt="Groovy"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.freemarker.org/">
            <img src="/images/logos/freemarker.png" alt="FreeMarker"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.gradle.org/">
            <img src="/images/logos/gradle.gif" alt="Gradle"></a></div>

        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.slf4j.org/">
            <img src="/images/logos/slf4j.jpg" alt="SLF4J"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://logging.apache.org/log4j/2.x/">
            <img src="/images/logos/log4j.jpg" alt="Log4J 2"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://commons.apache.org/">
            <img src="/images/logos/commons.png" alt="Apache Commons"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://shiro.apache.org/">
            <img src="/images/logos/shiro.png" alt="Apache Shiro"></a></div>

        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://github.com/bitronix/btm">
            Bitronix TM</a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://ws.apache.org/xmlrpc/">
            Apache XML-RPC</a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://spockframework.org/">
            Spock</a></div>

        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.eclipse.org/jetty/">
            <img src="/images/logos/jetty.png" alt="Jetty"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.h2database.com/">
            <img src="/images/logos/h2-logo.png" alt="H2 Database"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://jquery.org/">
            <img src="/images/logos/jquery.png" alt="jQuery"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://getbootstrap.com">
            <img src="/images/logos/bootstrap.png" alt="Bootstrap"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://vuejs.org/">
            <img src="/images/logos/vuejs.png" alt="Vue JS"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://swagger.io/">
            <img src="/images/logos/swagger.png" alt="Swagger"></a></div>
    </div>

    <h3 class="section-title--smaller">Open Source Projects Used in Tool Components</h3>
    <div class="row logo_gallery">
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://www.elastic.co/products/elasticsearch">
            <img src="/images/logos/elasticsearch.png" alt="ElasticSearch"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://lucene.apache.org/">
            <img src="/images/logos/lucene.png" alt="Apache Lucene"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://xmlgraphics.apache.org/fop/index.html">
            <img src="/images/logos/fop.jpg" alt="Apache FOP"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://hazelcast.org/">
            <img src="/images/logos/hazelcast.png" alt="ElasticSearch"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.orientdb.org/">
            <img src="/images/logos/orientdb.png" alt="Orient DB"></a></div>

        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://www.jboss.org/drools/">
            <img src="/images/logos/drools.png" alt="Drools"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://camel.apache.org/">
            <img src="/images/logos/camel.png" alt="Apache Camel"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://jackrabbit.apache.org/">
            <img src="/images/logos/jackrabbit.gif" alt="Apache JackRabbit"></a></div>

        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.atomikos.com/">
            <img src="/images/logos/atomikos.png" alt="Atomikos TE"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://wiki.eclipse.org/Mylyn/Incubator/WikiText">
            Mylyn WikiText</a></div>
    </div>

    <h3 class="section-title--smaller">Selected Servlet Containers and Databases</h3>
    <div class="row logo_gallery">
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://tomcat.apache.org/">
            <img src="/images/logos/tomcat.png" alt="Apache Tomcat"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.eclipse.org/jetty/">
            <img src="/images/logos/jetty.png" alt="Jetty"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://www.mysql.com">
            <img src="/images/logos/mysql.png" alt="MySQL"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www.postgresql.org">
            <img src="/images/logos/postgresql.png" alt="PostgreSQL"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="http://www-01.ibm.com/software/data/db2/">
            <img src="/images/logos/db2.png" alt="DB2"></a></div>
        <div class="col-xs-4 col-sm-3 col-md-2"><a target="_blank" href="https://www.oracle.com/database/index.html">
            <img src="/images/logos/oracle.png" alt="Oracle"></a></div>
    </div>
</section>


<section class="container basic_html">
    <div class="divider-circle divider-circle--light"></div>
    <div>&nbsp;</div>

    <!-- Accordion -->
    <div class="panel-group accordion accordion-wide accordion--secondary" id="accordionResMgmt">
        <div class="panel panel-default">
            <div class="panel-heading"><h4 class="panel-title">
                <a class="collapsed" data-toggle="collapse" data-parent="#accordionResMgmt" href="#collapseResMgmt1">
                    <span class="marker"></span>Introduction: What is Moqui Framework?</a></h4>
            </div>
            <div class="panel-collapse collapse" id="collapseResMgmt1"><div class="panel-body">

                <p>Moqui Framework is a seamlessly integrated, enterprise-ready framework for building enterprise automation
                    applications based on Java. It includes tools for database interaction (relational, graph, document),
                    logic in local and web services, web and other UI with screens and forms, security, file/resource access,
                    scripts, templates, localization, caching, logging, searching, business rules, workflow, multi-tenancy, and integration.</p>

                <p>WARNING: What follows is generalized marketing text. If you're a developer and want to dive in, see the links
                    at the left. If you want warm fuzzies, you're in the right place.</p>
                <p>Moqui helps you build applications quickly and scale complex applications to hundreds of thousands of lines of
                    efficient, well organized code instead of millions of lines of mess. Along the way you work on only what you
                    care about, and let the framework take care of the rest.</p>
                <ul>
                    <li>Efficient tools and consolidated files make small apps easy and fast to build</li>
                    <li>A true 3-tier architecture and service-oriented design maintain clean structure for very large applications</li>
                    <li>You control your data, and with a comprehensive universal data model (Mantle UDM) it is easy to find your
                        data and have a place to put everything you need</li>
                    <li>Built-in support for advanced tools such as Jackrabbit (content), Camel (integration), ElasticSearch
                        (search), Drools (rules), and jBPM (workflow)</li>
                    <li>Advanced clustering using Hazelcast (other similar tools are pluggable) for database cache invalidation,
                        web session replication, background service executor, user notification topic, and JCache</li>
                    <li>More flexible and secure than hosted framework PAAS solutions like Force.com while easy to host
                        on-premise or in the cloud, even on Java IAAS and PAAS vendors like AWS Elastic Beanstalk, Cloudbees, Cloud Foundry, Heroku, etc</li>
                    <li>Easier to work with and more comprehensive than frameworks such as Spring, Rails, Grails, etc; takes
                        care of more for you automatically and through simple configuration, while allowing you to drop into code wherever you want</li>
                    <li>The Mantle Business Artifacts project based on Moqui Framework offers a foundation for eCommerce, ERP,
                        CRM, MRP, etc applications with data model and services to let you to focus on UI and differentiating features</li>
                    <li>A next-generation design based on over a decade of innovation and experience with Apache OFBiz</li>
                </ul>
                <p>Is your current platform not flexible enough? Is development progressing too slowly, especially later in complex projects?
                    Does your data lack structure? Are you finding it necessary to build things that seem really generic?
                    Are you having issues with scalability or difficult deployment? Are your hosting options limited? Are you
                    suffering from platform lock-in (especially with a PAAS solution)?</p>


                <p>The Moqui Framework is an integrated tool set with everything needed to start building web-based and distributed
                enterprise applications right away. Rather than starting with a set of tools and figuring out how to use them together
                and filling in gaps that are not handled by default, Moqui is ready to go.</p>

                <p>The framework features a well-defined Java API that makes it easy to get at the features listed below, especially
                in Groovy code. What's even better is that the Moqui tools are designed to be used in a declarative way so most of
                what you need to do will be possible with XML configuration and little or no code, unless you want code... which
                    you can insert or override anywhere.</p>

                <p><strong>Comprehensive:</strong> Moqui Framework is designed to provide comprehensive infrastructure for
                    enterprise applications and handle common things so you can focus your efforts on the business requirements,
                    whether it be for a multi-organizational ERP system, an interactive community web site, or even a bit of simple
                    content with a few forms thrown into the mix.</p>

                <p><strong>Automatic Functionality:</strong> By using the tools and practices recommended for the framework you can
                    easily build complex applications with most security and performance concerns taken care of for you.</p>

                <p><strong>No Code Generation:</strong> Moqui relies on dynamic runtime functionality to avoid the need for code
                    generation. This keeps your development artifacts small and easy to maintain, not just easy to create.</p>

                <p><strong>True 3-Tier Architecture:</strong> Many modern frameworks have tools for database interaction and user
                    interaction but you have to roll your own logic layer. Moqui has a strongly defined and feature rich logic layer
                    built around service-oriented principles. This makes it easy to build a service library for internal application
                    use, and automatically expose services externally as needed.</p>

                <p>The next layer up in the Moqui ecosystem is a project called Mantle that consists of a Universal
                Data Model, a Universal Service Library based on the data model, and a Universal Business Process
                Library to guide the design of it all. For more information please see the <a href="/mantle.html">Mantle</a> page.</p>

                <p>For a more complete list see the <a href="docs/features.html">Framework Features page</a>.</p>
            </div></div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading"><h4 class="panel-title">
                <a class="collapsed" data-toggle="collapse" data-parent="#accordionResMgmt" href="#collapseResMgmt2">
                    <span class="marker"></span>Design: Why choose Moqui Framework?</a></h4>
            </div>
            <div class="panel-collapse collapse" id="collapseResMgmt2"><div class="panel-body">

                <p>When selecting an enterprise application framework there are many criteria
                to consider. These criteria drove the design of Moqui:</p>

                <h4>Strong Best Practices</h4>
                <p>Your mother probably encouraged you to maintain a policy of: "A place for everything, and everything
                    in its place." For enterprise frameworks best practices involve identifying common development needs
                    and having a tool planned for each (or sometimes a primary and secondary best practice). Some needs
                    to consider include:</p>
                <ul>
                    <li>process incoming data</li>
                    <li>structure multi-area pages/screens</li>
                    <li>gather and prepare data for output</li>
                    <li>format/layout output</li>
                    <li>business (service) logic (including persistence related operations)</li>
                    <li>service orchestration, process triggering, etc</li>
                    <li>define business data structures</li>
                    <li>route web requests (process incoming data, render responses)</li>
                    <li>route logic calls (support remote and local implementations, sync/async/scheduled execution,
                        tx mgmt, security, etc)</li>
                </ul>
                <p>The main point here is consistency. There is an efficiency aspect to this, but more on that later.
                    This becomes more important as teams and projects get larger, and where teams are distributed or too
                    large to interact closely and have common review of the artifacts produced. Without these guidelines
                    developers spend a lot of time researching possible tools, learning about tools others have used,
                    and dealing with differences in tools when working on requirements that across a large application.</p>
                <p>In some cases the choice for a "primary" best practice tool handle most cases really well, but
                    doesn't handle certain things very well (or at all). In those cases a "secondary" best practice tool
                    should also be specified along with reasons when it should be used.</p>

                <h4>Minimal Tool Set Redundancy</h4>
                <p>A small set of tools provides various benefits both during initial development, and to an even
                    greater extent, in ongoing maintenance and improvements:</p>
                <ul>
                    <li>less technology switching as people work in different areas of the applications</li>
                    <li>less segmentation of development groups in your organization</li>
                    <li>easier to read, review, and maintain code</li>
                    <li>more consistency among the artifacts</li>
                    <li>easier choice of tools and areas to build things in as new designs are ready for implementation
                        or existing designs are changed</li>
                    <li>easier for new people to learn the technologies (with fewer technologies to learn)</li>
                </ul>
                <p>Individual developers may not be familiar with the set of tools chosen, and they may prefer the tools
                they are already familiar with (sometimes with strong bias). Some set of tools has to be chosen or you
                end up with the opposite of the benefits above. In the long run, and often short-term as well, a smaller
                tool set is better for both individuals and organizations.</p>

                <h4>Efficient Tools</h4>
                <p>This is #3 for a reason. If the overall tool set and practices are not adequate the benefits from
                    efficient tools will be lost in the noise and overrun by the problems caused by other things.
                    Efficient development tools result in development artifacts that are (in order of importance):</p>
                <ul>
                    <li>simple</li>
                    <li>reusable by design</li>
                    <li>easy to read as well as write</li>
                    <li>minimally error prone</li>
                    <li>small</li>
                </ul>
                <p>Some tools are great for small and simple applications, but the size and complexity of artifacts
                    scale poorly, resulting in applications that are unnecessarily large and complex.</p>

                <h4>Existing Artifacts</h4>
                <p>What existing artifacts (code, etc) do you have that you plan to continue using? Which tools were
                    are those artifacts based on? The existing artifacts may include custom developed or packaged
                    software, and may be currently in use or planned to be introduced as part of the project.</p>
                <p>This is a lower priority because rewriting existing artifacts in a consistent way might not be better
                    for initial development, but is definitely better for ongoing customization, extension, and
                    maintenance. While this may seem expensive and difficult, there are various factors that make it
                    easier than writing the original code:</p>
                <ul>
                    <li>existing artifacts represent a detailed specification that includes business and technical
                        details, and nuances that would otherwise need to be defined or made up along the way</li>
                    <li>more junior developers can work on re-writing the code than were involved with the original</li>
                    <li>less risk involved in rewriting than was originally there for the initial design and build</li>
                </ul>

                <h4>Summary</h4>
                <p>As projects and teams get larger and go on longer a comprehensive and well organized set of tools
                    can make the difference between costs growing exponentially and smooth sailing with minimal
                    surprises as new requirements arise or changes are needed.</p>
                <p>The Moqui Framework is based on a decade of experience designing the tools of the Apache OFBiz
                    Framework using real-world business application requirements, and actually using those tools to
                    build a system with a set of artifacts that have been reused and built on to create thousands of
                    custom systems and dozens of open source and commercial derivative works. All of this was driven
                    by people who do customization for a living, so tools that facilitate customization were a high
                    priority.</p>
                <p>So why Moqui? As OFBiz and the community around it grew in size it became more difficult to make
                    dramatic changes to the framework and tools used in the project. Ideas kept coming about ways to
                    improve things, organize artifacts better, use convention over configuration, get rid of redundant
                    and unused tools, and generally make things more consistent. The Moqui Framework is the result of
                    all of these experiences and ideas, combined into innovative and fresh ways to build the best
                    applications in the shortest time and with the easiest to maintain artifacts.</p>

            </div></div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading"><h4 class="panel-title">
                <a class="collapsed" data-toggle="collapse" data-parent="#accordionResMgmt" href="#collapseResMgmt4">
                    <span class="marker"></span>OFBiz: How does it compare to Moqui?</a></h4>
            </div>
            <div class="panel-collapse collapse" id="collapseResMgmt4"><div class="panel-body">

                <h4>ControlServlet, widgets (screen, form, menu, tree):</h4>

                <p>These tools are now all combined into the Moqui XML Screens.</p>

                <p>There are no explicit menus and instead there are subscreens and a menu is
                automatically generated from the set of subscreens in a screen.</p>

                <p>Instead of using the decoration pattern the XML Screens use subscreens to
                compose an hierarchy of screens. The subscreens for a screen can be
                configured in three different ways for different purposes including: a
                directory structure plus defaults for a normal screen/subscreens hierarchy,
                an XML element to include screens from other applications or that aren't in
                any application, and a database table that allows add-on component to add
                a subscreen to an existing screen somewhere else.</p>

                <p>It is not an option to have multiple XML Screens in a single file. Each file
                represents a single screen to make it easier to see what an application looks
                like just by browsing the directory structure, kind of like it is for webapps
                with normal templates and such.</p>

                <p>Forms and trees are kept in separate files and are simply in-lined
                in a screen. It is possible to refer to forms externally using the
                screen's file location and the name of the form.</p>

                <p>The widgets don't have any style attributes that will be used for HTML
                class attributes. There are id attributes in various places, but the intent
                is to use automatic id and class elements based on names and types of
                elements in the XML Screens and then keep all of the styling in an external
                CSS file.</p>

                <p>There aren't any AJAX- and HTML-specific elements and attributes. This
                goes back to the original intent of the OFBiz widgets and that is to be purely
                declarative and platform independent. Many XML Screens elements will be
                implemented using AJAX and DHTML, and options to control those or add to them
                will be available.</p>

                <h4>MiniLang simple-methods, screen/form/etc actions</h4>

                <p>All operations from these various places are combined in one XSD file
                and are referred to as XML Actions. These are included in various places
                using the "actions" and "condition" elements. With this approach there is no
                inconsistency for similarly named and designed operations or conditions.</p>

                <p>Moqui XML Actions don't have operations that are not frequently used and some
                operations are like a combination of various simple-method operations. There
                are operations for a few additional things as well, like producing and
                consuming XML.</p>

                <p>Some operations that are inconsistent in different places in OFBiz, like
                calling a service, have all similar features combined into one far more useful
                operation.</p>

                <p>There is no performFind service needed in Moqui as the entity-find operation
                has an element that takes its place, and can be combined with various other
                elements of a find by condition for a great deal of flexibility that is
                easily usable.</p>

                <p>The actions are available in many more places including ECA rules, screen
                transitions (like the OFBiz controller request events), and others.</p>

                <h4>Service definitions and implementations</h4>

                <p>The OFBiz Service Engine is most like the Service Facade in Moqui. There are
                many other facades, and for more info see the API Structure section below.</p>

                <p>Service names are split into verb and noun parts, which together make up the
                service name (ie like: ${verb}${noun}). Services are called with the combined
                name and can separate the verb and noun parts of it using a hash mark ('#').
                Services are also organized by path just like Java classes to facilitate lazy
                loading and to better organize code. The full name of a service will follow a
                pattern like: "${path}.${verb}${noun}".</p>

                <p>Service parameters in Moqui are like the service attributes in OFBiz.</p>

                <p>Service parameters are split into two groups: "in-parameters" and
                "out-parameters" so that parameters with the same name can have different
                settings going into or coming out of the service.</p>

                <p>Parameters in Moqui have hierarchical sub-types for map and collection types.</p>

                <p>Parameters have a fairly complete set of validation tags. Those
                validation tags will be used for server-side validation when the service is
                called, AND when the service is a target on a screen transition it will be
                used to generate client-side validation in JavaScript. This validation
                is defined once but run in both places.</p>

                <p>As mentioned above XML Actions are available in many places, and one of those
                places is inside a service definition. With this a service implementation can
                be inline inside the service definition or external depending on preference.</p>

                <h4>Entity Engine</h4>

                <p>The OFBiz Entity Engine is most like the Entity Facade in Moqui. There are
                many other facades, and for more info see the API Structure section below.</p>

                <p>Entity definitions are more streamlined and don't have the less useful
                attributes and elements. Primary key fields are designated with an attribute
                on the field element instead of using a separate element. The data type
                dictionary in Moqui is more simple and better organized than in OFBiz and
                the data types available are declared in the XSD for auto-completion help.</p>

                <p>The API for dealing with entity values and for queries and such is much more
                simple, streamlined, and in a few small cases has additional functionality.
                The methods have far more consistent names than in OFBiz, using
                create/update/delete everywhere instead of things like store or remove.</p>

                <p>Moqui does not have a concept of multiple delegators so the Entity Proxy
                configuration file is much more simple. The datasource elements are also far
                more simple because all of the database-specific settings are now in the
                database configuration file along with the data type dictionary (combined in
                one file instead of a separate file for each database).</p>

                <h4>API structure</h4>

                <p>The Moqui API is clearly separate into interfaces and implementations of
                those interfaces. Applications only need to worry about the interfaces part
                of the Java code and not the underlying implementation.</p>

                <p>All tools in the Moqui framework are available through the ExecutionContext
                object, which is created and attached to a thread for each web request,
                remotely called service, etc. It keeps the current context for whatever is
                running and has a series of facades for each tool in the framework, including
                for sevices, entities, screens, localization, logging, caching, user info
                and preferences, and so on. Some of the implementations of these interfaces
                will be reusable from one thread to another, and others will be created for
                each thread.</p>

                <p>The API is designed to take advantage of some of the syntax short cuts in
                Groovy such as using the dot syntax to start with the Moqui static object and
                get down to whatever part of the API you need.</p>

                <h4>Configuration and code layout</h4>

                <p>In Moqui the framework is one big happy set of tools that work together.
                There is no attempt to separate the tools or make them useful on their own.
                That was goal at first with OFBiz, but never really worked out very well and
                splitting the framework into components caused more difficulty than it helped
                things. So, in Moqui it's all one big framework, and one that can be easily
                compiled and deployed and so on. The basic idea is that the framework jar
                files (api and implementation) on the classpath plus the locaiton of the
                runtime directory are all you need to get started. Components can be loaded
                through an API or configuration.</p>

                <p>Configuration files are meant to come from a runtime directory and are not
                spread around the code. There is a default-conf directory in the framework
                so that if a configuration file is left out the framework will have a default
                to fallback on that will work in most cases.</p>

                <p>While Moqui supports multiple webapps, the normal deployment mode is be as
                a single big webapp with screen trees from add on components mounted on a
                certain path within the big webapp.</p>

                <h4>Content management</h4>

                <p>Instead of a set of entities and services for content management that are
                part of the project Moqui uses the JCR 2.0 interfaces (and by default the
                Apache Jackrabbit implementation) for content management. Anywhere there is
                a "location" in the API or XML files it can have a prefix of "content://" to
                access something from the JCR. This means that code and templates and such
                can go there as well.</p>

                <h4>Security: authorization</h4>

                <p>Moqui uses a set of entities to define user groups, artifact groups, and
                permissions for a group of users on a group of artifacts. These are external
                settings and support record level permissions too. With this approach there
                is no need make the artifacts responsible for permission checking, and no
                code changes are required to change permissions when customizing or
                maintaining or supporting an application.</p>

                <p>There is a tarpit, like the idea in OFBiz, that uses the same model as the
                permissions for reduced redundancy and more features.</p>

                <h4>I18n and L10n</h4>

                <p>Internationalization is implicit everywhere in Moqui using natural text in
                the default language for a key instead of an artificial identifier. This
                reduces redundancy and effort. The localized labels are in a database table
                instead of an XML file to perform better (only lookup and cache labels that
                are used) and to support per-instance localizations in a multi-instance
                environment.</p>

            </div></div>
        </div>
    </div>
    <!-- End Accordion -->

   <div class="divider-circle divider-circle--light divider-circle-margin"></div>
</section>
